home *** CD-ROM | disk | FTP | other *** search
/ Xenosoft 2 / Xenosoft 2 (Game collection)(1994).iso / bioforge / script / towergun.scp < prev    next >
Text File  |  1994-12-08  |  19KB  |  882 lines

  1.  
  2. // THE TOWER GUN IS INTIMATELY CONNECTED WITH THE VARIABLE LANDER_STAGE
  3. // WHICH TELLS EXACTLY WHERE IN THE MARINE LANDING SEQUENCE WE ARE.
  4. // LANDER_STAGE VALUES ARE AS FOLLOWS:
  5. // 0 - START OF GAME
  6. // 1 - HEARD THE INTENT TO LAND OVER GUARD ROOM RADIO
  7. // 2 - HEARD THE FINAL APPROACH IN THE TOWER, OR ALTERNATELY IN THE
  8. //     CONTROL LEVEL HALLWAY.
  9. // 3 - YOU'VE WALKED INTO THE TOWER GUN CAMERA, THUS STARTING THE
  10. //     DESCENT OF THE FIRST DROP SHIP.
  11. // 4 - FIRST SHIP HAS PASSED BY IN THE TOWER.  WHETHER IT IS BLOWN
  12. //     UP IS NOT RELEVENT.  USE FIRSTLANDERALIVE TO FIND THAT OUT.
  13. // 5 - SECOND SHIP HAS GONE BY IN THE TOWER.  THE SEQUENCE IS COMPLETE.
  14.  
  15.  
  16. // _LEXATGUN - IS LEX STANDING THERE USING THE GUN?
  17. // _FIRSTLANDERALIVE - HAVE YOU BLOWN THE FIRST LANDER OUT OF THE SKY YET?
  18. // _SECONDLANDERALIVE - HAVE YOU BLOWN UP THE SECOND LANDER?
  19. // _INCUTSCENE - YOU'RE IN STASIS WATCHING THE SHOTS FIRE AND
  20. //     ZOOM BY OR HIT THE SHIP.
  21. // _GUNCHARGED - WHETHER THE GUN IS READY FOR FIRING OR NOT.
  22.  
  23. // GN1 (20 FRAMES) - LARGE GUN USED TO SHOOT DOWN DROP SHIP.
  24. // GN2 (20 FRAMES) - ALIASING FOR GN1
  25. // LND1 (42 FRAMES) - DROP SHIP FAR AWAY MOVING RT-LT
  26. // LND2 (62 FRAMES) - DROP SHIP NEAR MOVING LT-RT
  27. // RISE (34 FRAMES) - SECOND SHIP RISES UP TO SHOOT AT YOU.
  28.  
  29.  
  30. // THESE ROUTINES ARE THE ONES THAT TAKE OVER LEX'S TURNING FUNCTIONALITY
  31. // AND REDIRECT IT TO MAKING THE GUN TURN LEFT AND RIGHT.  THE KEY
  32. // VARIABLE THAT INDICATES THAT LEX IS NOW CONTROLLING THE GUN IS
  33. // CALLED "LexAtGun"
  34.  
  35. { SWIVELGUNLEFT
  36.  
  37.     I ( ^üí         > 0 ) THEN é     
  38.     I ( ^üó        > 0 ) THEN é     
  39.  
  40.     ^üó        ++
  41.     // 16 IS THE MAX_GUN_FRAME
  42.     I ( ^üÆ        < 16 ) THEN
  43.         {
  44.         ^üÆ        ++
  45.         @Çå   (`ä⌐           50)
  46.         }
  47.     ^üô        = ^üÆ       
  48.  
  49.     @Ç¢               PLAYER
  50.     q          TURN_GUN ^üÆ       
  51.     o         
  52.     â      
  53.     ^üó        --
  54. }       
  55.  
  56. { SWIVELGUNRIGHT
  57.  
  58.     I ( ^üí         > 0 ) THEN é     
  59.     I ( ^üó        > 0 ) THEN é     
  60.  
  61.     ^üó        ++
  62.     I ( ^üÆ        > 1 ) THEN 
  63.         {
  64.         ^üÆ        --
  65.         @Çå   (`ä⌐           50)
  66.         }
  67.     ^üô        = ^üÆ       
  68.  
  69.     @Ç¢               PLAYER
  70.     q          TURN_GUN ^üÆ       
  71.     o         
  72.     â      
  73.     ^üó        --
  74. }
  75.  
  76. { TEST_GUN
  77.     :LEFT
  78.     @Ç¥   SWIVELGUNLEFT
  79.     W    2
  80.     I ( ^üÆ        < 16 ) THEN J    #Çâ 
  81.  
  82.     :RIGHT
  83.     @Ç¥   SWIVELGUNRIGHT
  84.     W    2
  85.     I ( ^üÆ        > 1 ) THEN J    #Çä  
  86. }
  87.  
  88.  
  89. { BIG_GUN_USE
  90.  
  91.     I ( ^ü₧       = 0 ) THEN
  92.         {
  93.         @Ç¢               PLAYER
  94.         A  OFF
  95.         G  GUNHERE 
  96.         //WALK
  97.         £    -90 GRADUAL
  98.         M      USE_TWR_GUN
  99.         o         
  100.         â      
  101.         q          TURN_GUN ^üÆ       
  102.         o         
  103.         æ               CBG
  104.         ^ü₧       = 1
  105.         }
  106. }
  107.  
  108. { RELEASEGUN
  109.     Æ              
  110.     ^ü₧       = 0
  111.  
  112.     @Ç¢               PLAYER
  113.     M      END_TWR_GUN
  114.  
  115. // I'LL ADD THIS IN LATER WHEN IT DOESN'T CRASH ANYMORE. -KLD
  116. //      IF( _GUNACTIVE == 0 ) THEN
  117. //              IF( @SETCURRENTFIGURE ROLAND ) THEN
  118. //                      {
  119. //                      FACE ROLAND GRADUAL
  120. //                      //@@@
  121. //                      @SUBTITLE _ROLAND_VOX_RECOIL1 "Turn on the Main Gun, damn you!"
  122. //                      IF( _SRE_COUNT < 1 ) THEN
  123. //                              _SRE_COUNT = 1
  124. //                      MOTION TAUNT3 70
  125. //                      }
  126.     A  ON
  127.  
  128.     // DON'T WAIT HERE, NO MATTER WHAT!
  129.     // WAIT 5 SECONDS
  130.     I  ^üƒ               != 1 AND ^üá                != 1 THEN
  131.         i           LEX SHOTDOWN
  132. }
  133.  
  134. // THIS HANDLES THE GUN'S REAL-TIME ASPECTS.
  135. { MANAGEGUN
  136.  
  137.     :TOP
  138.     â      
  139.     I ( ^üí         > 0 ) THEN J    #Çê
  140.     I ( ^ü₧       == 0 ) THEN J    #Çê
  141.  
  142.     I ( @Çñ          ( $éá         ) ) THEN
  143.         {
  144.         // LEFT_ARROW
  145.         @Ç¥  ( SWIVELGUNLEFT )
  146.         }
  147.  
  148.     I ( @Çñ          ( $éó         ) ) THEN
  149.         {
  150.         // RIGHT_ARROW 
  151.         @Ç¥  ( SWIVELGUNRIGHT )
  152.         }
  153.  
  154.     J    #Çê
  155. }
  156.  
  157.  
  158.  
  159. { CBG _KEY _MODIFIERS _MOUSE
  160.  
  161.     I ( ^üí         > 0 ) THEN é     
  162.  
  163.     N      ~ÇÇ 
  164.         {
  165.         U    $éÑ        
  166.         U    $üù    
  167. // THIS WORKS FINE.
  168.             @Ç¥   RELEASEGUN
  169.             X ÇÇ 
  170.  
  171.         U    $éí        
  172.         U    $éÅ         
  173.             // SPACEBAR
  174.             I ( ^üí         == 0 ) THEN
  175.                 {
  176.                 I ( ^üú        == 0 ) THEN
  177.                     {
  178.                     @Çì      GUNFAILURESOUND
  179. // THIS CAUSES CRASHES. -KLD
  180.                     @Çì      RELEASEGUN
  181.                     }
  182.                 E   
  183.                     @Ç¥  ( FIREGUN )        
  184.                 }
  185.             X ÇÇ 
  186.         }
  187.     é     
  188. }
  189.  
  190.  
  191. // THIS JUST RUNS THE SEQUENCE SHOWING A SHIP PASS OFF IN THE DISTANCE.
  192. { DISTANTSHIP  _SPEED
  193.  
  194.     O     $Çç         
  195.  
  196.     ^üö         = 0
  197.  
  198.     I  @Çû             (^çÆ            ) THEN 
  199.         {
  200.         @Çî                  (^çÆ             200 0 90)
  201.         @Çï                 (^çÆ             13000 9000 90)
  202.         W    90
  203.                   (^çÆ            )
  204.         }
  205.  
  206.     :FIRSTSHIPFLY
  207.     ^üö         ++
  208.     W    ~ÇÇ   
  209.     I ( ^üö         < 41 ) THEN J    #Çï         
  210.  
  211.     ^üö         = 0 
  212. }
  213.  
  214.  
  215. { BLOWUPSECOND
  216.     â      
  217.  
  218.     Ü            ( 40,20,20, 3 )
  219.               (^çÆ            )
  220.     @Çå   (`ǽ         200)
  221.     ú             ( BOOM, WHITE, BANG0 )
  222.  
  223.     W    15
  224.     Ü            ( 40,20,20, 5 )
  225.     @Çå    (`ǽ        )
  226.     ú             ( BOOM, WHITE, BANG1 )
  227.  
  228.     @Çì      KABOOM
  229.  
  230.     O     $ÇÇ        
  231.     O     $Çá     
  232. }
  233.  
  234. // THIS IS THE MISSILE THAT GETS SHOT FROM THE INCOMING DROPSHIP.
  235. // YOU WILL FIND ITS
  236. { MISSILE
  237.     < HAS_GRAVITY = 0 >
  238.     < IS_BOUNCY = 0 >
  239.     < ELASTICITY = 0 >
  240.     < IS_REFLECTIVE = 0 >
  241.     < EXTENT = ( 20, 20, 20 ) >
  242. }
  243.  
  244. { MISSILE_HIT_WALL
  245.     @Ç¢              ( PLAYER )
  246.     ü           CURFIG
  247.     @Çì      BLOWYOUUP
  248. }
  249.  
  250. { BLOWYOUUP
  251.  
  252.     P        ~ÇÇ 
  253.  
  254.     @Ç¢              ( PLAYER )
  255.     M      DROPSHIP_WINS CONTINUE
  256.  
  257.     ~ÇÇ  = 5
  258.  
  259.               (^çÆ            )
  260.  
  261.     @Çì      KABOOM
  262.  
  263.     @Çå   (`åò        )
  264.  
  265.     :BRIGHTEN
  266.     Ü            ( ~ÇÇ , ~ÇÇ , ~ÇÇ , 999 )
  267.     ~ÇÇ  += 20
  268.     W    2
  269.     L    #ÇÉ      6
  270.  
  271.     Æ              
  272.  
  273.     C      SHOW STITLE
  274.  
  275.     @Ç¥   KILLLEX
  276. }
  277.  
  278. { SHIPLAS
  279.     < HAS_GRAVITY = 0 >
  280.     < IS_BOUNCY = 0 >
  281.     < ELASTICITY = 0 >
  282.     < IS_REFLECTIVE = 1 >
  283.     < EXTENT = ( 20, 20, 20 ) >
  284. }
  285.  
  286. { SHIPLAS_HIT_WALL 
  287.     @Çå   ( `Çú        , 200 )
  288.     ú             ( BOOM, PING, CURITEM )
  289. }
  290.  
  291. { SHIPLAS_BOUNCE
  292.     @Çå   (`üì           )
  293.     ú             ( BOOM, PING, CURITEM )
  294. }
  295.  
  296.  
  297.  
  298. // *****************************************
  299. // FLY THE SHIPS PAST THE TOWER
  300. // *****************************************
  301. { SHIPORCHESTRA
  302.     B         `ǽ         `Çú         `üì          
  303.     B         `Çô           `Ç⌐            
  304.  
  305.     ^ü£              = @Çì      RUNINCOMINGSHIPS
  306. }
  307.  
  308. { RUNINCOMINGSHIPS
  309.  
  310.     P        ~ÇÇ            
  311.     P        ~Çü         
  312.     P        ~Çé      
  313.     
  314.     ~ÇÇ             = 0
  315.  
  316. //      JUMP AFTERFIRSTSHIP
  317.  
  318.     // FIRST SHIP FLIES BY;  DURING THIS SECTION THE GUARD SHOULD
  319.     // BE WHINING AND THREATENED BY LEX INTO TURNING THE GUN BACK ON.
  320.  
  321.     // THE SHIP IS NOWHERE TO BE SEEN, THEN IT GLIDES ACROSS RIGHT TO 
  322.     // LEFT PRETTY SLOWLY SO THERE IS PLENTY OF TIME FOR YOU TO NOTICE
  323.     // IT AND FOR THE GUARD TO CAPITULATE. -KLD
  324.                 @Ç¥  ( DISTANTSHIP, 5 )
  325.  
  326.     // SOMEWHERE OFF TO THE LEFT, THE SHIP MUST BE TURNING...
  327.     W    20 SECONDS
  328.  
  329.     // FIRST SHIP PASSES IN FRONT OF THE GUN AREA.  IN ORDER TO 
  330.     // ACTUALLY HIT IT LEX HAD BETTER BE AT THE GUN'S CONTROLS.
  331.     ^üò         = 0
  332.  
  333.     
  334.         :SHIPCROSSESVIEW
  335.  
  336.         // TIME DILATION SHOULD OCCUR IF WE'RE OFF SEEING THE SHOTS
  337.         // FIRE FROM THE GUN OR ZOOM PAST THE SHIP, OR HIT THE SHIP.
  338.         I ( ^üí         > 0 ) THEN
  339.             {
  340.             â      
  341.             J    #Çû            
  342.             }
  343.  
  344.         I  @Çû             (^çÆ            ) = $Ç╗    THEN
  345.             {
  346.             ^çÆ             = @Çç     (`Ǽ         0)
  347.             @Çî                  (^çÆ             10 200 150)
  348.             @Çï                 (^çÆ             6000 13000 150)
  349.             }
  350.         
  351.  
  352.         I ( ^üƒ               ) THEN
  353.             {
  354.             I ( ^üí         = 0 && @ÇÄ             (TWR1) = 0 && @ÇÄ             (TWR2) = 0 ) THEN
  355.                 {
  356.                 @Ç¥   EARLYBLOWUP
  357.                 é     
  358.                 }
  359.  
  360.             ^üò         ++
  361.             W    5
  362.             }
  363.  
  364.         I ( ^üƒ               && ^üò         < 61 ) THEN J    #Çû            
  365.  
  366.     I ( ^üƒ               == 0 ) THEN
  367.         {
  368.                   (^çÆ            )
  369.         @Çì      CELEBRATE
  370.         @Çì     ( SHOWDRAMATICCRASH )
  371.         }
  372.     //@@@                
  373.     E    @Ç║       `ç₧              "Damn it!  That ship got through!"
  374.     
  375.     // WHETHER THE SHIP MANAGED TO PASS, OR WHETHER IT GOT SHOT DOWN
  376.     // WE DON'T WANT TO SEE ITS FLY-BY FRAMES ANYMORE.
  377.     ^üò         = 0
  378.  
  379.     // IF, AT THIS POINT, THE FIRST LANDER IS STILL ALIVE, THE
  380.     // GAME-STOPPING MARINES WILL SHOW UP EVENTUALLY EVEN IF YOU SHOOT
  381.     // DOWN THE SECOND SHIP.  JUST CHECK FIRSTLANDERALIVE TO SEE.
  382.  
  383.     // NOW IS ABOUT WHEN THE GUARD SHOULD GET BRAVE AND DECIDE HE REALLY
  384.     // WANTS TO KILL YOU AFTER ALL.
  385.  
  386.     :AFTERFIRSTSHIP
  387.     ^ü¥           = 4
  388.     
  389.               (^çÆ            )
  390.     
  391.     // OK, NOW WE CAN SHOW THE SECOND SHIP COMING IN.  YOU SHOULD
  392.     // ALREADY BE EMBROILED IN YOUR FIGHT WITH THE SUDDENLY-BRAVE
  393.     // GUARD.  THE SECOND SHIP COMES IN FASTER THAN THE FIRST TO 
  394.     // GIVE A FEELING OF INCREASED PRESSURE.
  395.  
  396.     
  397.     
  398.     
  399.                 @Ç¥  ( DISTANTSHIP, 3 )
  400.  
  401.     // NOW, A DRAMATIC PAUSE WHILE YOU WONDER WHY THE SHIP ISN'T
  402.     // COMING ACROSS YOU VIEW, AND THEN...
  403.     W    3 SECONDS
  404.  
  405.     // AT THIS POINT YOU MIGHT BE SEEING THE FIRST LANDER BLAZE
  406.     // ACROSS THE SKY IN AN INDEPENDENT PROCESS.  WE WANT TO BE SURE TO
  407.     // WAIT UNTIL IT IS DONE, SO WE CHECK ITS VISIBLE FRAME.
  408.         :WAITTILLCRASHED
  409.         â      
  410.         I ( ^üÖ        != 0 ) THEN J    #Çÿ            
  411.  
  412.  
  413.     // THE SECOND SHIP SUDDENLY RISES UP IN FRONT OF YOU!  AT PARTICULAR
  414.     // MOMENTS THE SHIP FIRES LASERS AT YOU, WHICH BOUNCE OFF THE
  415.     // REFLECTIVE TOWER, AND FINALLY A MISSILE, WHICH DESTROYS YOU.
  416.  
  417.     ^üÜ         = 0
  418.     ~Çü          = 0
  419.     ~Çé       = 1
  420.  
  421.     :RISEUP
  422.  
  423.         :WAITHERE
  424.  
  425.         // TIME DILATION SHOULD OCCUR IF WE'RE OFF SEEING THE SHOTS
  426.         // FIRE FROM THE GUN OR ZOOM PAST THE SHIP, OR HIT THE SHIP.
  427.         I ( ^üí         > 0 ) THEN
  428.             {
  429.             â      
  430.             J    #ÇÜ     
  431.             }
  432.  
  433.  
  434.     I ( ^üá                ) THEN
  435.         {
  436.  
  437.         I ( ^üí         = 0 && @ÇÄ             (TWR1) = 0 && @ÇÄ             (TWR2) = 0 ) THEN
  438.             {
  439.             @Ç¥   EARLYBLOWUP
  440.             é     
  441.             }
  442.                 
  443.         I  @Çû             (^çÆ            ) = $Ç╗    THEN
  444.             {
  445.             ^çÆ             = @Çç     (`Ǽ         0)
  446.             @Çî                  (^çÆ             10 200 60)
  447.             @Çï                 (^çÆ             7000 11000 60)
  448.             }
  449.         
  450.         ^üÜ         += ~Çé      
  451.     
  452.         W    4
  453.     
  454.         I ( ~Çü          == 0 && ^üÜ         == 30 ) THEN
  455.             {
  456.             ~Çé       = -1
  457.             ~Çü          ++
  458.             }
  459.  
  460.         // USED TO BE 23 TO FIRE ONLY ONCE...   
  461.         I ( ~Çü          == 1 && ^üÜ         == 20 ) THEN
  462.             {
  463.             ~Çé       = 1
  464.             ~Çü          ++
  465.             }
  466.  
  467.         I ( ~Çü          == 2 && ^üÜ         == 32 ) THEN
  468.             {
  469.             ~Çé       = -1;
  470.             ~Çü          ++
  471.             }
  472.             
  473.         I ( ~Çü          == 3 && ^üÜ         == 28 ) THEN
  474.             {
  475.             ~Çé       = 1;
  476.             ~Çü          ++
  477.             }                       
  478.                 
  479.         // AT THIS MOMENT THE LASERS ARE FIRED AT THE TOWER.
  480.         I ( ^üÜ         == 20 ) THEN
  481.             {
  482.             Ü            ( 3,3,3, 1 )
  483.             @Ç╢   SHIPLAS SHIP0 DEST0A 10 0 0 0
  484.             W    10
  485.             Ü            ( 3,3,3, 1 )
  486.             @Ç╢   SHIPLAS SHIP0 DEST0B 10 0 0 0
  487.             }
  488.     
  489.         // YOU'VE BLOWN IT.  THE SHIP FIRES A MISSILE AT YOU.
  490.         I ( ^üÜ         == 33 ) THEN
  491.             {
  492.             C      TWR1
  493.  
  494.             // DRAW A SMALL EXPLOSION AS THE MISSILE FIRES
  495.             ú             ( BOOM PING SHIP1 )
  496.  
  497.             // ACTUALLY FIRE THE MISSILE AT THE TOWER
  498.             @Ç╢   MISSILE SHIP1 DEST 10 0 0 0
  499.  
  500.             //@SETCURRENTITEM LASER
  501.             //COLLISIONS CURITEM OFF
  502.  
  503.             B         `åò        
  504.             ~ÇÇ             = 1
  505.             }
  506.         }
  507.  
  508.     I ( ^üá                && ^üÜ         < 34 ) THEN J    #ÇÖ   
  509.  
  510.     :AFTERSECONDSHIP
  511.  
  512.     I ( ^üá                == 0 ) THEN
  513.         {
  514.         I ( ~ÇÇ             == 0 ) THEN
  515.             @Çì      CELEBRATE
  516.         @Çì      BLOWUPSECOND
  517.         }
  518.  
  519.     ^ü¥           = 5
  520.  
  521.  
  522.     :ONESURVIVED
  523.  
  524.     â      
  525.     I ( ~ÇÇ             = 0 && ^üí         = 0 && @ÇÄ             (TWR1) = 0 ) THEN
  526.         {
  527.         @Ç¥   EARLYBLOWUP
  528.         é     
  529.         }
  530.  
  531.     I ( ^üƒ               == 1 ) THEN
  532.         J    #Ç£        
  533.  
  534.  
  535. }
  536.  
  537. { EARLYBLOWUP
  538.  
  539.     @Ç¢               PLAYER
  540.     A  OFF
  541.  
  542.     ^üò         = 0
  543.     ^üÜ         = 10
  544.  
  545.     C      TWR1
  546.  
  547.     @Çå    `Ǽ        
  548.     :KEEPRISING
  549.     â      
  550.     W    4
  551.     ^üÜ         += 1
  552.     I ( ^üÜ         < 33 ) THEN
  553.         J    #Ç₧       
  554.  
  555.     // DRAW A SMALL EXPLOSION AS THE MISSILE FIRES
  556.     ú             ( BOOM PING SHIP1 )
  557.  
  558.     // ACTUALLY FIRE THE MISSILE AT THE TOWER
  559.     @Ç╢   MISSILE SHIP1 DEST 10 0 0 0
  560.  
  561.     B         `åò        
  562. }
  563.  
  564. { TESTFIRSTHIT _GUN _SHIP
  565.  
  566.     P        ~Çé 
  567.     P        ~Çâ 
  568.  
  569.     ~Çé  = 0
  570.     ~Çâ  = ~Çü   + ~ÇÇ 
  571.  
  572.     //CAPTION "Ship=%ld and Sum=%ld", _SHIP, _SUM, CONTINUE
  573.  
  574.     I ( ~Çü   < 51 ) THEN
  575.         {
  576.         // FOR SHIP FRAMES 44-50 THERE IS ROUGHLY A ONE-TO-ONE
  577.         // COORELATION TO THE GUN FRAMES, STARTING AT FRAME 19
  578.         // AND GOING DOWN TO FRAME 14, SO...
  579.  
  580.         // USED TO BE 63 TO 64
  581.         I ( ~Çâ  >= 61 && ~Çâ  <= 64 ) THEN
  582.             ~Çé  = 1
  583.         }
  584.     E    I ( ~Çü   < 56 ) THEN
  585.         {
  586.         // 51+13=64 AND 55+10=65
  587.         I ( ~Çâ  >= 64 && ~Çâ  <= 65 ) THEN
  588.             ~Çé  = 1
  589.         }
  590.     E    I ( ~Çü   < 60 ) THEN
  591.         {
  592.         // 56+6=62, 58+3=61
  593.         I ( ~Çâ  >= 61 && ~Çâ  <= 62 ) THEN
  594.             ~Çé  = 1
  595.         }
  596.  
  597.     é      ~Çé 
  598. }
  599.  
  600.  
  601.  
  602. { GETFIRSTSHIPHITSTATE
  603.     P        ~ÇÇ   
  604.     P        ~Çü  
  605.  
  606.     ~Çü   = ^üò        
  607.  
  608.     ~ÇÇ    = $é╖              
  609.  
  610.     I ( @Ç¥  ( TESTFIRSTHIT( ^üÆ       , ~Çü   ) ) = 1 ) THEN
  611.         {
  612.         ~ÇÇ    = $é╣            
  613.         }
  614.     E   
  615.         {
  616.         // OK, SO MAYBE WE DIDN'T ACTUALLY HIT IT.  BUT DID
  617.         // WE COME CLOSE?  WE CAN TELL BY TESTING FOR A HIT
  618.         // WITH THE SHIP IN SLIGHTLY DIFFERENT LOCATIONS.
  619.  
  620.         ~Çü   += 1
  621.         I ( @Ç¥  ( TESTFIRSTHIT( ^üÆ       , ~Çü   ) ) = 1 ) THEN
  622.             ~ÇÇ    = $é╕             
  623.  
  624.         ~Çü   += 1
  625.         I ( @Ç¥  ( TESTFIRSTHIT( ^üÆ       , ~Çü   ) ) = 1 ) THEN
  626.             ~ÇÇ    = $é╕             
  627.  
  628.         ~Çü   += 1
  629.         I ( @Ç¥  ( TESTFIRSTHIT( ^üÆ       , ~Çü   ) ) = 1 ) THEN
  630.             ~ÇÇ    = $é╕             
  631.         }
  632.  
  633.     é      ~ÇÇ   
  634. }
  635.  
  636. { GETSECONDSHIPHITSTATE
  637.  
  638.     P        ~ÇÇ   
  639.     P        ~Çü  
  640.  
  641.     ~Çü   = ^üÜ        
  642.  
  643.     ~ÇÇ    = $é╖              
  644.  
  645.     I ( ^üÆ        >= 6 && ^üÆ        <= 8 ) THEN
  646.         I ( ~Çü   > 17  ) THEN
  647.             {
  648.             ~ÇÇ    = $é╣            
  649.             }
  650.  
  651.     é      ~ÇÇ   
  652. }
  653.  
  654.  
  655.  
  656. // *****************************************
  657. // SHOW THE GUN FIRING!
  658. // *****************************************
  659. [ GUNFIREDISPLAY
  660.  
  661.     00:03 ^üù         = 0
  662.     00:06 ^üù         = 1
  663.     00:09 ^üù         = 2
  664.     00:09 @Çå    (`Çô          , 150)
  665.     00:12 ^üù         = 3
  666.     00:15 ^üù         = 4
  667.     00:18 ^üù         = 5
  668.     00:18 @Çå    (`Ç⌐            , 100, -1024)
  669.     00:21 ^üù         = 6
  670.     00:24 ^üù         = 7
  671.     00:24 @Çå    (`Çô          , 150)
  672.     00:27 ^üù         = 8
  673.     01:00 ^üù         = 9
  674.     01:00 @Çå    (`Ç⌐            , 100)
  675.     01:03 ^üù         = 0
  676.     01:06 ^üù         = 0
  677. ]
  678.  
  679. { SHOWGUNFIRING
  680.  
  681.     // TELL OTHER SCRIPTS THAT WE'RE LOOKING AT SOMETHING OTHER
  682.     // THAN THE MAIN GAME.
  683.     ^üí         += 1
  684.  
  685.     // PERHAPS WE SHOULD PUT THE PLAYER AND EVERYONE ELSE INTO
  686.     // STASIS RIGHT HERE...
  687.  
  688.     C      LASER
  689.  
  690.     :FIRE_GUNS
  691.                 @Çì      GUNFIREDISPLAY
  692.     L    #Çñ       2
  693.  
  694.     ^üù         = 11
  695.     ^üí         -= 1
  696. }
  697.  
  698. { CELEBRATE
  699.     @Ç¥   RELEASEGUN
  700.  
  701.     @Ç¢               PLAYER
  702.     M      TWR_VICTORY CONTINUE
  703.     W    15
  704.     I  ^üƒ               = 0 THEN @Ç║      (`亠             "Yes!")//@@@ PLEASE TRANSLATE
  705.     //IF _SECONDLANDERALIVE = 0 THEN @SUBTITLE(_ROLAND_VOX_LEX3 "Yes!")
  706. }
  707.  
  708. { GUNFAILURESOUND
  709.  
  710.     @Çå   (`ä¡       ,100)
  711.     W    5
  712.     @Çå   (`ä¡       ,150)
  713.     W    5
  714.     @Çå   (`ä¡       ,200)
  715.     W    5
  716.     @Çå   (`ä¡       )
  717.     W    15
  718.     //@@@
  719.     @üì           (`èÉ                 $Ç╜      "Tower Gun off-line")
  720. }
  721.  
  722. // *****************************************
  723. // THIS ROUTINE HANDLES EVERYTHING ASSOCIATED WITH THE ACT OF
  724. // FIRING THE GUN, INCLUDING SHOWING IT AND DETERMINING WHETHER
  725. // A SUCCESSFUL HIT WAS MADE.
  726. // *****************************************
  727. { FIREGUN
  728.     P        ~ÇÇ       
  729.  
  730.     // MAKE CERTAIN THAT YOU AREN'T ABLE TO FIRE THE GUN MORE
  731.     // THAN ONCE AT A TIME.
  732.     ÿ              ^ü£             
  733.     ^üí         += 1
  734.  
  735.     // I MUST BE AT THE FIRST SHIP...
  736.     I ( ^ü¥           == 3 ) THEN
  737.         {
  738.         ~ÇÇ        = @Ç¥  ( GETFIRSTSHIPHITSTATE )
  739.  
  740.         I ( ~ÇÇ        == $é╣             ) THEN
  741.             {
  742.             ^üƒ               = 0
  743.             ^üò         = 0
  744.             }
  745.     
  746.                     @Çì     ( SHOWGUNFIRING )
  747.         
  748.         I ( ~ÇÇ        == $é╕              ) THEN
  749.             @Ç¥  ( SHOWSHOTSNEARSHIP( 0 ) )
  750.     
  751.         I ( ~ÇÇ        == $é╣             ) THEN
  752.             @Ç¥  ( SHOWSHOTSNEARSHIP( 1 ) )
  753.         }
  754.  
  755.     I ( ^ü¥           == 4 ) THEN
  756.         {
  757.         ~ÇÇ        = @Ç¥  ( GETSECONDSHIPHITSTATE )
  758.  
  759.         I ( ~ÇÇ        == $é╣             ) THEN
  760.             {
  761.             ^üá                = 0
  762.             ^üÜ         = 0
  763.             }
  764.  
  765.                     @Çì     ( SHOWGUNFIRING )
  766.         }
  767.  
  768.     :LEAVEFIRESEQUENCE
  769.  
  770.     C      TWR1
  771.     C      UNLOCK
  772.     â      
  773.  
  774.     ^üí         -= 1
  775.     Ö             ^ü£             
  776. }
  777.  
  778.  
  779. [ SHOWDRAMATICCRASH
  780.          
  781.     00:00 B         `Ç¡         `üê         `üÄ                                     
  782.     00:00 ^üÖ           =    1
  783.     00:00 @Çå               `Ç¡        
  784.     00:02                  ^êî   
  785.     00:06 ^üÖ           =    2
  786.     00:12 ^üÖ           =    3
  787.     00:18 ^üÖ           =    4
  788.     00:24 ^üÖ           =    5
  789.     01:00 ^üÖ           =    6
  790.     01:06 ^üÖ           =    7
  791.     01:12 ^üÖ           =    8
  792.     01:18 ^üÖ           =    9
  793.     01:24 ^üÖ           =    10
  794.     02:00 ^üÖ           =    11
  795.     02:06 ^üÖ           =    12
  796.     02:12 ^üÖ           =    13
  797.     02:18 ^üÖ           =    14
  798.     02:24 ^üÖ           =    15
  799.     03:00 ^üÖ           =    16
  800.     03:06 ^üÖ           =    17
  801.     03:12 ^üÖ           =    18
  802.     03:18 ^üÖ           =    19
  803.     03:24 ^üÖ           =    20
  804.     04:00 ^üÖ           =    21
  805.     04:06 ^üÖ           =    22
  806.     04:12 ^üÖ           =    23
  807.     04:18 ^üÖ           =    24
  808.     04:24 ^üÖ           =    25
  809.     04:27 @Çå               `üê        
  810.     05:00 ^üÖ           =    26
  811.     05:06 ^üÖ           =    27
  812.     05:12 ^üÖ           =    28
  813.     05:18 ^üÖ           =    29
  814.     05:24 ^üÖ           =    30
  815.     06:00 ^üÖ           =    31
  816.     06:06 ^üÖ           =    32
  817.     06:12 ^üÖ           =    33
  818.     06:18 ^üÖ           =    34
  819.     06:24 ^üÖ           =    35
  820.     07:00 ^üÖ           =    36
  821.     07:06 ^üÖ           =    37
  822.     07:12 ^üÖ           =    38
  823.     07:18 ^üÖ           =    39
  824.     07:20 ^üÖ           =    40
  825.     07:24 ^üÖ           =    0
  826.     09:02 @Çå               `üÄ                
  827. ]         
  828.  
  829.  
  830.  
  831. { SHOWSHOTSNEARSHIP _ACTUALLY_HIT
  832.  
  833.     ^üí         += 1
  834.     ^üÿ        = 1
  835.  
  836.     C      HIT
  837.  
  838.     B         `Ǭ           `Çô           `ǽ         `üê        
  839.  
  840.  
  841.     // SHOW THE SHIP ON APPROACH.  THE FIRST FEW SHOTS ALWAYS MISS
  842.     // AND CROSS THE BOW.
  843.     :MOVESHIP
  844.  
  845.     W    4
  846.  
  847.     ^üÿ        ++
  848.  
  849.     // THE FIRST TWO SHOTS CROSS THE BOW...
  850.     I ( ^üÿ        == 15 || ^üÿ        == 17 ) THEN
  851.         @Çå   (`Ǭ          )
  852.         
  853.     I ( ^üÿ        == 24 ) THEN
  854.         {
  855.         // IF THE SHIP WAS NOT ACTUALLY HIT, BREAK OUT OF THE
  856.         // LOOP HERE, OTHERWISE...
  857.         I ( ~ÇÇ           = 0 ) THEN J    #Ǽ  
  858.  
  859.         @Çå   (`Çô          , 100)
  860.         @Çå    `ǽ        
  861.                 (^çÆ            )
  862.     
  863.         ^êî    = @Çå   (`üê        )
  864.         }
  865.  
  866.     I ( ^üÿ        < 42 ) THEN J    #ǽ     
  867.  
  868.  
  869.     :LEAVE
  870.  
  871.     C      TWR1
  872.     C      UNLOCK
  873.  
  874.     // OUT OF THE EVIL LOOP NOW.
  875.     ^üÿ        = 43
  876.     
  877.     ^üí         -= 1
  878. }
  879.  
  880.  
  881. //$ 26 - version number
  882.